package com.augurit.gis.common.util;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 进行表单数据转换
 * @author jianfeng.shen
 *
 */
public class FormUtil {
	
	public static Integer getNotNullInt(Integer integer){
		if(integer==null || integer.intValue()==0){
			return null;
		}
		return integer;
	}
	
	public static boolean isEmpty(String str){
		if(str==null||str.trim().equals("")){
			return true;
		}
		return false;
	}
	
	public static String object2String(Object output){
		if(output==null)return"";
		if(output instanceof Date){
			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
			return dateFormat.format((Date)output);
		}
		return output.toString();
	}
	
	public static Double object2Double(Object object){
		if(object==null || object.equals(""))return 0d;
		try {
			return Double.valueOf(object.toString()); 
		} catch (Exception e) {
			return 0d;
		}
	}
	
	public static String number2String(Object object){
		return number2String(object, false);
	}
	
	public static String number2String(Object object,boolean zero2Empty){
		if(object == null)return "";
		if(object instanceof Number){
			Number number = (Number) object;
			if(zero2Empty&&number.doubleValue()==0){
				return "";
			}
		}
		return object.toString();
	}
	public static void main(String[] args) {
		System.out.println(number2String(12,true));
		System.out.println(number2String(0,true));
		System.out.println(number2String(0d,false));
		System.out.println(number2String(0l,true));
		System.out.println(number2String(0f,true));
	}

	/**
	 * 将表单中的数据转化为整型，如果出错或为空，则返回null
	 * @param input
	 * @return
	 */
	public static Integer string2Integer(String input){
		Integer ret = null;
		if(input!=null && !input.equals("")){
			try {
				ret = Integer.parseInt(input.trim());
			} catch (Exception e) {
				System.err.println("表单数据出错："+input+" 不是整型!");
			}
		}
		return ret;
	}
	/**
	 * 将表单中的数据转化为长整型，如果出错或为空，则返回null
	 * @param input
	 * @return
	 */
	public static Long string2Long(String input){
		Long ret = null;
		if(input!=null && !input.equals("")){
			try {
				ret = Long.parseLong(input.trim());
			} catch (Exception e) {
				System.err.println("表单数据出错："+input+" 不是长整型!");
			}
		}
		return ret;
	}
	/**
	 * 将表单中的数据转化为双精度型，如果出错或为空，则返回null
	 * @param input
	 * @return
	 */
	public static Double string2Double(String input){
		Double ret = null;
		if(input!=null && !input.equals("")){
			try {
				ret = Double.parseDouble(input.trim());
			} catch (Exception e) {
				System.err.println("表单数据出错："+input+" 不是双精度型(Double)!");
			}
		}
		return ret;
	}
	
	public static Double string2Double(String input,boolean null2Zero){
		Double ret = null;
		if(input!=null && !input.equals("")){
			try {
				ret = Double.parseDouble(input.trim());
			} catch (Exception e) {
				System.err.println("表单数据出错："+input+" 不是双精度型(Double)!");
			}
		}
		if(ret == null) ret = 0d;
		return ret;
	}
	/**
	 * 将表单中的数据转化为长浮点型，如果出错或为空，则返回null
	 * @param input
	 * @return
	 */
	public static Float string2Float(String input){
		Float ret = null;
		if(input!=null && !input.equals("")){
			try {
				ret = Float.parseFloat(input.trim());
			} catch (Exception e) {
				System.err.println("表单数据出错："+input+" 不是浮点型(Float)!");
			}
		}
		return ret;
	}
	
	/**
	 * 判断两个对象是不是相等:equal
	 * 说明:null.equal("")
	 */
	public static boolean objectsEqual(Object object1,Object object2){
		if(object1==null && object2 == null){
			return true;
		}else if(object1 !=null && object2 != null){
			if(object1.equals(object2)){
				return true;
			}else{
				return false;
			}
		}else{
			if(object1!=null && object1.equals("")){
				return true;
			}else if(object2!=null && object2.equals("")){
				return true;
			}
			return false;
		}
	}
	/**
	 * 判断两个对象是不是相等:equal
	 */
	public static boolean objectsNotEqual(Object object1,Object object2){
		return !objectsEqual(object1, object2);
	}
	
	
	public static String getString(String input){
		if(input == null || input.trim().length()==0){
			return null;
		}else{
			return input;
		}
	}
}
